package modules.evaluator;

import java.util.ArrayList;
import java.util.List;

import com.beust.jcommander.Parameter;

/**
 * Handles all regular application parameters for hcluster Module. Used for parameter parsing for hcluster module.
 * @author Raja Hashim Ali.
 */
public class Parameters {

	/** Required parameters: Application/Module to run */
	@Parameter(description = "<Cluster File>")
	public List<String> files = new ArrayList<String>();
	
	/** Help. */
	@Parameter(names = {"-h", "--help"}, description = "Display help. To understand the options and input parameters, use help.")
	public Boolean help = false;
	
	/** AlphaProteoBacteria Cluster evaluation. */
	@Parameter(names = {"-a","--alphaproteobacteria"}, description = "AlphaProteoBacteria Cluster evaluation.")
	public boolean apbEvaluation = false;
	
	/** Yeast Cluster evaluation. */
	@Parameter(names = {"-y","--yeast"}, description = "Yeast Cluster evaluation.")
	public boolean yeast = false;
	
	/** Simulated Data Cluster evaluation. */
	@Parameter(names = {"-s","--simulateddata"}, description = "Simulated Data Cluster evaluation.")
	public boolean simulatedData = false;
	
	/** Type of cluster gephi/text. */
	@Parameter(names = {"-g","--graphicalcluster"}, description = "Whether the cluster file is in gephi or text format.")
	public boolean graphicalCluster = false;
	
	/** path to data and to data output path */
	@Parameter(names = {"-p","--path"}, description = "Simulated Data Cluster evaluation.")
	public String path = "./";
	
	/** test file */
	@Parameter(names = {"-t","--testfile"}, description = "Test File in Hashim's Test Format (htf, file containing gene/protein name, index and family per line).")
	public String testFile = "";
	
	/** output fileName */
	@Parameter(names = {"-o","--output"}, description = "Output fileName.")
	public String output = "HomoCompara";
	
	/** methodology */
	@Parameter(names = {"-m","--methodology"}, description = "Methodology used to generate cluster.")
	public String software = "GenFamClust";
	
	/** multispec dataset without kinase */
	@Parameter(names = {"-k","--kinaseexcluded"}, description = "Whether to exclude Kinase fmaily in MultiSpec Analysis.")
	public boolean kinase = false;
	
	/** Test File in BCL Format */
	@Parameter(names = {"-tb","--testfileinbcl"}, description = "Test File in BCL Format.")
	public String testFileinBCLFormat = "";
}
